#define _CRT_SECURE_NO_WARNINGS

#include<deque>
#include<list>
#include<iostream>

using namespace std;

namespace myqueue
{
	template<class T, class con = deque<T>>
	class queue
	{
	public:
		bool empty()const 
		{
			return _obj.empty();
		}
		size_t size()const
		{
			return _obj.size();
		}
		T& front()
		{
			return _obj.front();
		}
		const T& front()const
		{
			return _obj.front();
		}
		T& back()
		{
			return _obj.back();
		}
		const T& back()const
		{
			return _obj.back();
		}
		void push(const T&val)
		{
			_obj.push_back(val);
		}
		void pop()
		{
			_obj.pop_front();
		}
		void swap(queue& obj)
		{
			_obj.swap(obj._obj);
		}
	private:
		con _obj;
	};
}
